09. 类型和类型转换

这个对象属于什么类型?

到目前为止,我们已经介绍了四种类型:

  • int (整数)
  • float (浮点数)
  • bool (布尔值,True 和 False)
  • str (字符串,针对文本)

Python 中的每个对象都有一个类型。对象的类型定义了哪些运算符和函数能作用于该对象,以及它们的运行原理。

你可以使用内置函数 type() 来直接查看对象的类型,例如:

>>> print(type(633))
int
>>> print(type("633"))
str
>>> print(type(633.0))
float

在上面的示例中,我们实际上采用了三种不同的方式来定义同样的数字,因此它们有三种不同的类型,其中每种类型都有自己的运行方式。

作为旁注,我们对函数 type() 的输出调用了函数 print() 。这段代码将首先运算括号里的内容,再将得出的值作为输出传递给下一个函数。在这个示例中,Python 将首先运行 type() 函数,然后其输出被 print() 出来。

哪种类型? I

"12" 这个对象属于什么类型?大家可以使用本页面下方的代码环境进行测试。输入代码之后,你可以通过 “测试答案” 按钮运行代码。

SOLUTION: str

哪种类型? I

12.3 这个对象属于什么类型?大家可以使用本页面下方的代码环境进行测试。输入代码之后,你可以通过 “测试答案” 按钮运行代码。

SOLUTION: float

哪种类型? III

len("my_string") 这个对象属于什么类型?大家可以使用本页面下方的代码环境进行测试。输入代码之后,你可以通过 “测试答案” 按钮运行代码。

SOLUTION: int

哪种类型? IV

"hippo" *12 这个对象属于什么类型?大家可以使用本页面下方的代码环境进行测试。输入代码之后,你可以通过 “测试答案” 按钮运行代码。

SOLUTION: str

类型练习

请在下方的练习中测试对象的类型。不要忘记使用 print 来查看代码运行的结果。

Start Quiz:

选择类型

不同的类型具有不同的属性,在设计计算机程序时,我们需要根据使用数据的方式来选择数据类型。
例如,如果你要将数字作为句子的一部分,很简单,这个数字的类型需要是字符串。如果你要对一个 true/false 值进行编码,那么布尔型操作起来要比字符串容易一些。

在一些情况中,你可能无法决定自己所收到的数据的类型,但仍需要使用它。这时你可以基于旧对象来创建新对象,并在这一过程中更改数值类型。
我们来看一些例子:

下面这段代码从浮点数创建了一个整数,并将其赋值给变量 count ,最后打印出了 count 及其类型。

>>> count = int(4.0)
>>> print(count)
4
>>> print(type(count))
<class 'int'>

下面这段代码从数字创建了一个字符串:

>>> house_number = 13
>>> street_name = "The Crescent"
>>> town_name = "Belmont"
>>> print(type(house_number))
<class 'int'>
>>> address = str(house_number) + " " + street_name + ", " + town_name
>>> print(address)
13 The Crescent, Belmont

我们也可以从字符串创建一个数字,例如:

>>> grams_of_sugar = float("35.0")
>>> print(grams_of_sugar)
35.0
>>> print(type(grams_of_sugar))
<class 'float'>

练习:销售总额

在下面这道练习中,你需要更改输入和输出数据的类型来获得你希望的结果。

请根据提供的数据计算并打印一周的销售总额。你需要打印一个格式为: "This week's total sales: xxx" 的字符串,其中 xxx 将是实际销售总额的数字。你需要更改输入数据的类型才可以计算销售总额。

Start Quiz:

mon_sales = "121"
tues_sales = "105"
wed_sales = "110"
thurs_sales = "98"
fri_sales = "95"

#TODO: Print a string with this format: This week's total sales: xxx
# You will probably need to write several lines of code before the print statement.

答案:

weekly_sales = int(mon_sales) + int(tues_sales) + int(wed_sales) + int(thurs_sales) + int(fri_sales)
weekly_sales = str(weekly_sales) 
print("This week's total sales: " + weekly_sales)